/*
Program sluzi na odosielanie SMS pomocu programu demon.
Ako vstupne argumenty pouziva telefonne cislo kam sa ma sprava poslat v medzinarodnom tvare a text spravy neobsahujuci zakoncenia riadkov ('\n') obsahujuci najviac 160 znakov,
pricom znaky spravy, ktore patria medzi gsm7 special chars sa pocitaju za 2.
priklad zavolania programu:
# ./send_sms +4212123456
odpoved programu:
- program bud vypise chybu a skonci
- odosle sms a vypise "SMS bola úspešne odoslaná\n" a skonci
pre chod programu je nevyhnutne mat spusteny demon pripojeny k mobilu

program na zaciatku nacita vstupne argumeny,
nacita ip adresu a port z demon.conf kam sa ma na demon pripojit
pripoji sa na demon - ak nie skonci s chybou
autentifikuje sa na demon - ak nie skonci s chybou
zisti ci je demon pripojeny k mobilu resp sa pokusi pripojit demon k mobilu pomocou RESUME - ak je mobil odpojeny a nejde sa pripojit(lebo ho asi ovlada ina aplikacia),
 skonci s chybou
pokusi sa odoslat SMS - ak to nevyde skonci s chybou
ak to vyde skonci s pozitivnou hlaskou
*/
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include "../libmdemonapl/mdemonapl.h"


int main(int argc, char *argv[]){
  
  int i;
  int len;
  int result;
  char *received;
  int nread;
  int tel_len = 0;
  int text_len = 0;
  char *response;
  char *send_sms_command;
  char *pom;
  char *tel;
  char *text;
  int fd;
  
  if (argc == 2)
  {
    
    tel_len = strlen(argv[1]);
    tel = (char *) malloc((tel_len+1)*sizeof(char));
    strncpy(tel, argv[1], tel_len+1);
    text = "";
    text_len = 0;
  }
  else if(argc == 3)
  {
    tel_len = strlen(argv[1]);
    tel = (char *) malloc((tel_len+1)*sizeof(char));
    strncpy(tel, argv[1], tel_len+1);
    
    text_len = strlen(argv[2]);
    text = (char *) malloc((text_len+1)*sizeof(char));
    strncpy(text, argv[2], text_len+1);
  }
  else
  {
    printf("zle vstupne data: nespravny pocet argumentov\n");
    //syslog(LOG_ERR, "zle vstupne data: nespravny pocet argumentov - %m");
    return 1;
  }
  
  if ((tel == NULL) || ((tel_len=strlen(tel))>20))
  {
    printf("telefonne cislo je NULL alebo ma viac ako 20 znakov\n");
    return 1;
  }
  if ((text_len = strlen(text)) > 160)
  {
    printf("text sms ma viac ako 160 znakov\n");
    return 1;
  }
  
  send_sms_command = (char *) malloc((text_len + tel_len + 20)*sizeof(char));
  sprintf(send_sms_command, "RESUME\nSENDSMS %s %s\n", tel, text);
  
  fd = mdconnect_and_auth();
  if (fd < 0)
  {
    perror("sms sa nepodarilo poslat:");
    return 1;
  }
  
  if (mdsend_command_and_get_nresponses(fd, send_sms_command, &response, 2) == -1)
  {
    perror("sms sa nepodarilo odoslat:");
    return 1;
  }
  else if (((pom = strstr(response, "200")) != NULL) && (strlen(pom)>2) && (strstr((pom+1), "200") != NULL))
  {
    printf("sms uspesne odoslana\n");
    return 0;
  }
  else
  {
    printf("sms sa nepodarilo odoslat: %s\n", response);
    return 1;
  }
    
}

